åå®å šãªã¬ã³ã¡ã³ããŒã·ã§ã³ã·ã¹ãã ãã³ã³ãã³ãçºèŠã匷åãããšã©ãŒãåæžããã°ããŒãã«ãªãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãåäžãããæ¹æ³ãæ¢ããŸããå ç¢ã§ã¹ã±ãŒã©ãã«ãªå®è£ ãæ·±ãæãäžããŸãã
粟床ãè§£ãæŸã€ïŒã³ã³ãã³ãçºèŠã®ããã®åå®å šãªã¬ã³ã¡ã³ããŒã·ã§ã³ã·ã¹ãã ã®å
çŸä»£ã®è¶ æ¥ç¶ãããããžã¿ã«äžçã§ã¯ãã¬ã³ã¡ã³ããŒã·ã§ã³ã·ã¹ãã ã¯ç§ãã¡ã®ãªã³ã©ã€ã³äœéšã®ç®ã«èŠããªã建ç¯å®¶ã§ããã¹ããªãŒãã³ã°ãã©ãããã©ãŒã ã§æ°ããã·ãªãŒãºãææ¡ããããeã³ããŒã¹ãµã€ãã§æé©ãªè£œåãæäŸããããé¢é£ããåŠè¡è«æãæç€ºããããããŸã§ããããã®ã·ã¹ãã ã¯ãã³ã³ãã³ãã®ç¡éã®æµ·ãããã²ãŒãããŠãããŸããããããã³ã³ãã³ãã®è€éããšå€æ§æ§ãå¢ãã«ã€ããŠããšã©ãŒãäžæŽåãããã³æé©ã§ã¯ãªããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã®å¯èœæ§ãé«ãŸããŸããããªããæ¬ãæ¢ããŠãããšãã«æ ç»ãæšå¥šããããæçã®ã¬ã·ããæ¢ããŠãããšãã«ç§åŠè«æãæšå¥šãããããã·ã¹ãã ãæ³åããŠã¿ãŠãã ãããããã¯åã«ãæªããæšå¥šã§ã¯ãªãããŸã£ããäºææ§ã®ãªãçš®é¡ã®ã³ã³ãã³ãã§ããããã§ãåå®å šãªã¬ã³ã¡ã³ããŒã·ã§ã³ã·ã¹ãã ããåã«ããè¯ãæšå¥šã ãã§ãªããæ ¹æ¬çã«ããä¿¡é Œæ§ãé«ãå ç¢ãªã³ã³ãã³ãçºèŠãçŽæããéèŠãªã€ãããŒã·ã§ã³ãšããŠç»å ŽããŸãã
ãã®å æ¬çãªã¬ã€ãã§ã¯ãåå®å šãªã¬ã³ã¡ã³ããŒã·ã§ã³ã·ã¹ãã ã®æ žå¿ãæãäžãããã®å¿ èŠæ§ãå®è£ æŠç¥ãã¡ãªããããããŠã¬ãžãªãšã³ãã§ãŠãŒã¶ãŒäžå¿ã®ã°ããŒãã«ãã©ãããã©ãŒã ã®æ§ç¯ã«äžããæ·±ã圱é¿ãæ¢ããŸããã¢ãŒããã¯ãã£ã®ãã©ãã€ã ãåæããå®çšçãªèª²é¡ã«ã€ããŠè°è«ããã³ã³ãã³ãçºèŠã¡ã«ããºã ã匷åããããšã³ãžãã¢ããããã¯ããããŒãžã£ãŒãããŒã¿ãµã€ãšã³ãã£ã¹ãã«å®è¡å¯èœãªæŽå¯ãæäŸããŸãã
ã¬ã³ã¡ã³ããŒã·ã§ã³ã·ã¹ãã ã®æ®éçãªåœ¹å²ãšãã®é ãããèœãšã穎
ã¬ã³ã¡ã³ããŒã·ã§ã³ã·ã¹ãã ã¯äžå¯æ¬ ãªãã®ã«ãªããŸãããæ å ±éå€ãšæŠãããšã³ã²ãŒãžã¡ã³ããä¿é²ããæ°ãåããªãã»ã©ã®æ¥çã§åçã«çŽæ¥åœ±é¿ãäžããŸããæå°éã®ã¹ã¿ãŒãã¢ããããæå€§ã®å€åœç±äŒæ¥ãŸã§ããããã®ãšã³ãžã³ã¯ããŒãœãã©ã€ãºããããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã®äžå¿ã«ãããŸãããããããããã®åºç¯ãªåœ±é¿ã«ãããããããå€ãã®åŸæ¥ã®ã¬ã³ã¡ã³ããŒã·ã§ã³ã·ã¹ãã ã¯ãæ ¹æ¬çãªèª²é¡ã«çŽé¢ããŠããŸããããã¯ãæšå¥šãããã³ã³ãã³ãã®åäºææ§ã確ä¿ããããšã§ãã
ãAnyãåé¡ïŒãã¹ãŠãééãããæ
å€ãã®å Žåãã¬ã³ã¡ã³ããŒã·ã§ã³ã·ã¹ãã ã¯ãäžèŠæçã«èŠããæè»æ§ãæã€ããã«èšèšãããŠããŸãããå®è¡æã®è匱æ§ãèããå°å ¥ããå¯èœæ§ããããŸããå€ãã®ã·ã¹ãã ã¯ããã¹ãŠã®æšå¥šå¯èœãªã¢ã€ãã ãäžè¬çãªãã¢ã€ãã ããŸãã¯ããšã³ãã£ãã£ããšããŠæ±ããŸããåçã«åä»ããããèšèªãäžååã«æ§é åãããAPIã«æ®åããŠãããã®ç·©ãåä»ãã¯ããããããAnyãåé¡ã«ã€ãªãããŸããã¢ã€ãã ã«ã¯å ±éã®èå¥åãåºæ¬çãªã¡ã¿ããŒã¿ã®ã»ããããããããããŸãããããã®å ·äœçãªå±æ§ãšæåŸ ãããçžäºäœçšã¯ããã®çã®æ§è³ªã«åºã¥ããŠåçã«ç°ãªããŸãããæ ç»ãã«ã¯ç£ç£ã俳åªãäžæ æéããããŸããã補åãã«ã¯äŸ¡æ ŒãSKUãåšåº«ããããŸãããèšäºãã«ã¯èè ãå ¬éæ¥ãèªæžæéããããŸãã
倿§ãªããŒã¿ã§ãã¬ãŒãã³ã°ãããã¬ã³ã¡ã³ããŒã·ã§ã³ãšã³ãžã³ãã¢ã€ãã ãæšå¥šããäžæµã®ã³ã³ãã³ãçºèŠã¬ã€ã€ãŒãããã®åã®èª€ã£ãæ³å®ã«åºã¥ããŠãããã¬ã³ããªã³ã°ãŸãã¯æäœããããšãããšãæ··ä¹±ãçããŸãã以äžãæ³åããŠãã ããã
- ã¢ãã¬ã«ã¢ã€ãã ã§ãããã®ããã«ããµã€ãºãã衚瀺ããããšããŠãæžç±ããæšå¥šããeã³ããŒã¹ãã©ãããã©ãŒã ãããã«ããããã£ãŒã«ãã空çœã«ãªã£ããããšã©ãŒãçºçãããããŸãã
- åç»ãã¬ãŒã€ãŒã«ãŠãŒã¶ãŒããªãã€ã¬ã¯ããããã®ã®ãåå¹ãè§£å床ãªãã·ã§ã³ã®ãããªæ ç»åºæã®ã¡ã¿ããŒã¿ãæåŸ ããã¡ãã£ã¢ã¹ããªãŒãã³ã°ãµãŒãã¹ã§ããããããã£ã¹ããšããœãŒãããæšå¥šããŸãã
- ãŠãŒã¶ãŒãæç€ºçã«ãã€ãã³ãç»é²ãããã£ã«ã¿ãªã³ã°ããŠããã«ãããããããæ±äººæ å ±ããæšå¥šãããããã§ãã·ã§ãã«ãããã¯ãŒãã³ã°ãµã€ããããã«ããããŠãŒã¶ãŒã¯äžæºãæããä¿¡é Œã倱ããŸãã
ãããã¯åãªããã€ããŒãªUIã°ãªããã§ã¯ãããŸããããããã¯ãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã«ãããæ ¹æ¬çãªãã¬ãŒã¯ã衚ããŠããããšã³ã²ãŒãžã¡ã³ããã³ã³ããŒãžã§ã³ããã©ã³ããã€ã€ã«ãã£ã®ã³ã¹ãããããå¯èœæ§ããããŸããæ ¹æ¬çãªåå ã¯ãããŒã¿åã蟌ã¿ãã¢ãã«ãã¬ãŒãã³ã°ãAPIé ä¿¡ãããã³ããšã³ãã¬ã³ããªã³ã°ã«è³ããŸã§ãã¬ã³ã¡ã³ããŒã·ã§ã³ãã€ãã©ã€ã³å šäœã§åŒ·åãªå匷å¶ãæ¬ åŠããŠããããšããããããŸããæç€ºçãªåã®å®£èšããªããšãéçºè ã¯ä»®å®ããããããªããªããç¹ã«ã³ã³ãã³ãã¿ã€ããå°ååºæã®å±æ§ã衚瀺èŠä»¶ãæã€ã°ããŒãã«ãªã³ã³ããã¹ãã§ã¯ãä¿å®ããããã°ãã¹ã±ãŒãªã³ã°ãå°é£ãªå£ããããã³ãŒãããŒã¹ã«ã€ãªãããŸãã
åŸæ¥ã®ã®ã¢ãããŒããšãã®éç
æŽå²çã«ãåäºææ§ã®åé¡ã«å¯Ÿãã解決çã¯ãåå¿çã§ããã°ãã°äžå®å šãªãã®ã§ããã
- å®è¡æãã§ãã¯ïŒè¡šç€ºæã«ã¢ã€ãã ã®åããã§ãã¯ããããã« `if/else` ã¹ããŒãã¡ã³ããŸã㯠`switch` ã±ãŒã¹ãå®è£ ããŸããããã¯å®å šãªã¯ã©ãã·ã¥ãé²ããŸãããåé¡ãæåŸã®ç¬éã«æŒãä»ããè€éã§å埩çã§ãšã©ãŒãçºçããããã³ãŒããäœæããŸãããŸããäžé©åãªæšå¥šãçæãããã®ãé²ããã®ã§ããããŸããã
- åå¥ã®ã¬ã³ã¡ã³ããŒã·ã§ã³ãšã³ãžã³ïŒåã³ã³ãã³ãã¿ã€ãïŒäŸïŒæ ç»çšãæžç±çšïŒã«å®å šã«åå¥ã®ã¬ã³ã¡ã³ããŒã·ã§ã³ã·ã¹ãã ãæ§ç¯ããŸããããã¯éåžžã«æç¢ºãªã³ã³ãã³ããµã€ãã«ã¯å¹æçã§ãããå€§å¹ ãªéçšãªãŒããŒããããéè€ããããžãã¯ã«ã€ãªãããããã®æ¬ã奜ããªãããã®ããã¥ã¡ã³ã¿ãªãŒã奜ããããããŸãããã®ãããªã¯ãã¹ã³ã³ãã³ãã®æšå¥šãä¿¡ããããªãã»ã©å°é£ã«ããŸãã
- ç·©ãåä»ãã¹ããŒãïŒãã£ãŒã«ãããªãã·ã§ã³ã§ãã£ãããåºãå€åãããããå¯èœæ§ã®ããæè»ãªããŒã¿æ§é ïŒå³å¯ãªã¹ããŒãã®ãªãJSONãªããžã§ã¯ããªã©ïŒã䜿çšããŸããããã¯ä¿ææ§ãæäŸããŸãããäºæž¬å¯èœæ§ãšåå®å šæ§ãç ç²ã«ãã倿§ãªããŒã ãåœå¢ãè¶ããããŒã¿ã®äžè²«æ§ã«ã€ããŠæšè«ããããšãããå°é£ã«ããŸãã
ãããã®ã¢ãããŒãã¯ãããçšåºŠæ©èœããŸãããè€æ°ã®èšèªãæåçãªã³ã³ããã¹ãã§åäœããè€éãªã³ã³ãã³ãçºèŠãã©ãããã©ãŒã ã«å¯ŸããŠãçã«å ç¢ã§ã¹ã±ãŒã©ãã«ã§éçºè ã«åªãããœãªã¥ãŒã·ã§ã³ãæäŸããã«ã¯äžååã§ãããããã¯ãåé¢é£ã®åé¡ã決ããŠãšã³ããŠãŒã¶ãŒã«å°éããªãããã«ãã³ã³ãã€ã«æä¿èšŒãšäœç³»çãªèšèšã®åãæŽ»çšããããšã«å€±æããŸãã
åå®å šæ§ã®æ¡çšïŒã¬ã³ã¡ã³ããŒã·ã§ã³ã·ã¹ãã ã«ããããã©ãã€ã ã·ãã
çŸä»£ã®ãœãããŠã§ã¢ãšã³ãžãã¢ãªã³ã°ã®åºç€ã§ããåå®å šæ§ãšã¯ãèšèªãŸãã¯ã·ã¹ãã ãåãšã©ãŒãé²ãç¯å²ãæããŸãã匷ãåå®å šãªã·ã¹ãã ã§ã¯ãäºææ§ã®ããããŒã¿åã«å¯ŸããŠã®ã¿æäœãèš±å¯ãããå€ãã®å Žåãå®è¡æã§ã¯ãªãã³ã³ãã€ã«æã«ãã§ãã¯ãè¡ãããŸãããã®ååãã¬ã³ã¡ã³ããŒã·ã§ã³ã·ã¹ãã ã«é©çšããããšã¯ãããããå£ãããããä»®å®ã«æºã¡ããšã³ãžã³ãããäºæž¬å¯èœã§ãå ç¢ã§ãã€ã³ããªãžã§ã³ãã«èšèšãããçºèŠãã©ãããã©ãŒã ãžãšå€é©ããŸãã
ã¬ã³ã¡ã³ããŒã·ã§ã³ã®ã³ã³ããã¹ãã«ãããåå®å šæ§ãšã¯ïŒ
ã¬ã³ã¡ã³ããŒã·ã§ã³ã·ã¹ãã ã«ãšã£ãŠãåå®å šæ§ãšã¯ãã¬ã³ã¡ã³ããŒã·ã§ã³ãã€ãã©ã€ã³å šäœãéããŠãåã³ã³ãã³ãã¿ã€ãã®ç¹å®ã®ç¹æ§ãšåäœãå®çŸ©ããã³åŒ·å¶ããããšãæå³ããŸããããã¯ä»¥äžãæå³ããŸãã
- æç€ºçãªã³ã³ãã³ãå®çŸ©ïŒãæ ç»ãããæžç±ãããèšäºããã補åããªã©ã®å®çŸ©ãããã®åºæã®å±æ§ãšå¿ é ãã£ãŒã«ãã§æç¢ºã«å®çŸ©ããŸãã
- åãæèããåŠçïŒããŒã¿åã蟌ã¿ãç¹åŸŽéãšã³ãžãã¢ãªã³ã°ãã¢ãã«ãã¬ãŒãã³ã°ãããã³ã¬ã³ã¡ã³ããŒã·ã§ã³çæã³ã³ããŒãã³ããããããã®ã³ã³ãã³ãã¿ã€ããçè§£ãå°éããããšãä¿èšŒããŸãã
- å¶åŸ¡ãããçžäºäœçšïŒã¬ã³ã¡ã³ããŒã·ã§ã³ãè¡ããããšãã«ãã·ã¹ãã ïŒããã³æ¶è²»ããã¯ã©ã€ã¢ã³ãïŒããåä¿¡ããŠããã³ã³ãã³ãã®ã¿ã€ããšããããæ£ããæäœãŸãã¯è¡šç€ºããæ¹æ³ãæ£ç¢ºã«ç¥ã£ãŠããããšãä¿èšŒããŸãã
ããã¯åã«ãšã©ãŒãé²ãããšã§ã¯ãããŸãããããã¯ãéçºè ãæ£ããäœ¿çšæ³ã«å°ããèªç¥è² è·ã軜æžããããæŽç·Žããããã³ã³ããã¹ããæèããæšå¥šãå¯èœã«ããã·ã¹ãã ãæ§ç¯ããããšã§ããããã¯ãåå¿çãªãå£ãããçŽãããšããèãæ¹ãããããã¢ã¯ãã£ããªãæ£ããèšèšããããšããå²åŠãžã®ç§»è¡ã§ãã
åå®å šãªã¬ã³ã¡ã³ããŒã·ã§ã³ã·ã¹ãã ã®ã¡ãªãã
åå®å šãªã¢ãããŒããæ¡çšããããšã®å©ç¹ã¯å€å²ã«ããããã°ããŒãã«ãªãããããªã³ãå šäœã«ãããéçºãéçšãããã³ãšã³ããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã«åœ±é¿ãäžããŸãã
1. å®è¡æãšã©ãŒã®åæžãšå®å®æ§ã®åäž
æãçŽæ¥çãªã¡ãªããã®1ã€ã¯ãå®è¡æãšã©ãŒã®åçãªåæžã§ããã³ã³ãã€ã«æïŒãŸãã¯éçºãµã€ã¯ã«ã®æ©ã段éïŒã§åã®äžèŽã®ãããæ€åºããããšã«ãããæ¬çªç°å¢ã§å£æ» çãªé害ãäžæ£ç¢ºãªè¡šç€ºãšããŠçŸããå€ãã®ãã°ãå®å šã«é²æ¢ãããŸããããã«ãããããå®å®ããã·ã¹ãã ãç·æ¥ãããã®åæžãããã³ãŠãŒã¶ãŒã察話ããã³ã³ãã³ãã¿ã€ãã«é¢ä¿ãªããäžçäžã®ãŠãŒã¶ãŒã«ãšã£ãŠããé«å質ã®ãµãŒãã¹ãå®çŸããŸãã
2. éçºè ãšã¯ã¹ããªãšã³ã¹ãšçç£æ§ã®åäž
åå®å šãªã·ã¹ãã ã§äœæ¥ããéçºè ã¯ãããæç¢ºãªã€ã³ã¿ãŒãã§ãŒã¹ãšä¿èšŒãã倧ãã«æ©æµãåããŸããã³ãŒãã¯èªã¿ããããçè§£ããããããªãã¡ã¯ã¿ãªã³ã°ãããããªããŸããçµ±åéçºç°å¢ïŒIDEïŒã¯ãã€ã³ããªãžã§ã³ããªèªåè£å®ããªãã¡ã¯ã¿ãªã³ã°ããŒã«ãããã³åãšã©ãŒã«é¢ãã峿ãã£ãŒãããã¯ãæäŸã§ããéçºãµã€ã¯ã«ãåçã«å éãããŸããããŒã ãç°ãªãã¿ã€ã ãŸãŒã³ãæåã«ãŸãããå Žåããã®æç¢ºãã¯ããã«éèŠã«ãªãã誀解ãæå°éã«æããäžè²«ããå®è£ ãä¿èšŒããŸãã
3. ãã匷åãªããŒã¿æŽåæ§ãšäžè²«æ§
åå®å šæ§ã¯ããŒã¿ã«å¥çŽã匷å¶ããŸãããã£ãŒã«ããç¹å®ã®åïŒäŸïŒäŸ¡æ Œã®`integer`ãŸãã¯å ¬éæ¥ã®`ISO_DATE`ïŒãšããŠå®£èšãããŠããå Žåãã·ã¹ãã ã¯ããã®åã«æºæ ããããŒã¿ã®ã¿ãä¿åãŸãã¯åŠçãããããšãä¿èšŒããŸããããã«ãããã¬ã³ã¡ã³ããŒã·ã§ã³ãã€ãã©ã€ã³å šäœã«æ±æãããããŒã¿ãäŒæããã®ãé²ããæ©æ¢°åŠç¿ã¢ãã«ã«ããæ£ç¢ºãªç¹åŸŽéãšããä¿¡é Œæ§ã®é«ãæšå¥šã«ã€ãªãããŸããããã¯ãããŒã¿åœ¢åŒãæåçãªæ £ç¿ãç°ãªãã°ããŒãã«ãã©ãããã©ãŒã ã«ãšã£ãŠç¹ã«éèŠã§ãã
4. æšå¥šã«å¯Ÿãããã倧ããªä¿¡é Œ
åºç€ãšãªãã·ã¹ãã ãåå®å šã§ããå Žåãæšå¥šèªäœã«å¯Ÿããä¿¡é Œãé«ãŸããŸãããŠãŒã¶ãŒã¯ãæ ç»ãæåŸ ããŠãããšãã«æžç±ã®æšå¥šã«ééããããèšäºãééã£ãèšèªã§è¡šç€ºããããããå¯èœæ§ãäœããªããŸãããã®äºæž¬å¯èœæ§ã¯ãŠãŒã¶ãŒã®ä¿¡é Œãè²ã¿ããšã³ã²ãŒãžã¡ã³ããæ·±ãããã©ãããã©ãŒã ã®ã€ã³ããªãžã§ã³ã¹ãšä¿¡é Œæ§ã«å¯Ÿããããè¯å®çãªèªèã奚å±ããŸããåœéçãªãŠãŒã¶ãŒã«ãšã£ãŠãããã¯ãæšå¥šãé¢é£æ§ãããã ãã§ãªããå°åã奜ã¿ã«é©ããŠããããšãæå³ããŸãã
5. ã·ã¹ãã ã®é²åãšã¹ã±ãŒã©ããªãã£ã®å®¹æã
ã³ã³ãã³ãã©ã€ãã©ãªãæé·ã倿§åããæ°ããã³ã³ãã³ãã¿ã€ããç»å Žããã«ã€ããŠãåå®å šãªã¢ãŒããã¯ãã£ã¯æ¡åŒµãã¯ããã«å®¹æã«ãªããŸããæ°ããã³ã³ãã³ãã¿ã€ãïŒäŸïŒä»¥åã¯ããããªããšãæç§æžããããªãã£ãåŠç¿ãã©ãããã©ãŒã ã«ãã€ã³ã¿ã©ã¯ãã£ãã³ãŒã¹ãã远å ããïŒã¯ãã³ãŒãããŒã¹å šäœã«æ£åšããæé»çãªä»®å®ãæ±ããŠç©ããããã®ã§ã¯ãªãããã®ã¿ã€ããå®çŸ©ããæç¢ºã«å®çŸ©ãããã·ã¹ãã ã®äžéšãæŽæ°ããããšãå«ã¿ãŸãããã®ã¢ãžã¥ãŒã«æ§ã¯ãæ°ããã³ã³ãã³ã圢åŒããŠãŒã¶ãŒã®èŠæ±ã«ãé£éçãªé害ãå°å ¥ããããšãªãé©å¿ããå¿ èŠãããæ¥éã«é²åããã°ããŒãã«ãã©ãããã©ãŒã ã«ãšã£ãŠéµãšãªããŸãã
6. ã³ãã¥ãã±ãŒã·ã§ã³ãšã³ã©ãã¬ãŒã·ã§ã³ã®æ¹å
åã®å®çŸ©ã¯ãããŒã¿ãšã³ãžãã¢ãæ©æ¢°åŠç¿ç§åŠè ãããã¯ãšã³ãéçºè ãããã³ããšã³ãéçºè ãªã©ã倿§ãªããŒã éã®å ±éèšèªãšããŠæ©èœããŸãããããã¯ãã³ã³ãã³ãã®æåŸ ãããæ§é ãšåäœãæç€ºçã«ææžåããŸããããã«ãããææ§ããšèª€è§£ãæžããããã¯æé»çãªç¥è移転ãå°é£ãªå€§èŠæš¡ãªã°ããŒãã«åæ£ããŒã ã«ãšã£ãŠç¹ã«äŸ¡å€ããããŸãã
åå®å šãªã³ã³ãã³ãçºèŠã®å®è£ ïŒå®çšçãªãã«ãŒããªã³ã
åå®å šãªã¬ã³ã¡ã³ããŒã·ã§ã³ã·ã¹ãã ãžã®ç§»è¡ã«ã¯ãããŒã¿ã¹ã¿ãã¯å šäœããã³ã¢ããªã±ãŒã·ã§ã³ã¹ã¿ãã¯å šäœã§ã®æ éãªèšèšãå¿ èŠã§ããããã¯åã«ã³ãŒãã«å泚éã远å ããããšã§ã¯ãããŸãããã³ã³ãã³ããã©ã®ããã«å®çŸ©ãããåŠçãããé ä¿¡ãããããæ ¹æ¬çã«æ§é åããããšã§ãã
ã³ã³ãã³ãã¿ã€ãã®å®çŸ©ïŒåºç€
æåã®ã¹ãããã¯ãã·ã¹ãã ãåŠçããã³ã³ãã³ãã®ããŸããŸãªã¿ã€ããæ£ç¢ºã«å®çŸ©ããããšã§ãããã®åºç€ãšãªãäœæ¥ã¯ããã¹ãŠã®åŸç¶ã®åå®å šãªæäœã®èå°ãèšå®ããŸããææ°ã®ããã°ã©ãã³ã°èšèªã¯ãããã®ããã®ããŸããŸãªæ§é ãæäŸããŸãã
åæåãŸãã¯ä»£æ°çããŒã¿åïŒADTïŒã®äœ¿çš
颿£çã§æç¢ºã«å®çŸ©ãããã³ã³ãã³ãã«ããŽãªã®å ŽåãåæåïŒåæïŒã¯åªããŠããŸããããè€éãªã·ããªãªã§ã¯ã代æ°çããŒã¿åïŒADTïŒãã€ãŸãååïŒãŠããªã³ïŒãšç©åïŒæ§é äœ/ã¯ã©ã¹ïŒã¯ãå³å¯ãªåä¿èšŒãç¶æããªãã倿§ãªããŒã¿ãã¢ãã«åããããã®åŒ·åãªæ¹æ³ãæäŸããŸãã
äŸïŒContentType åæåïŒæŠå¿µçïŒ
ããŸããŸãªã¡ãã£ã¢ãæäŸãããã©ãããã©ãŒã ãæ³åããŠãã ãããã³ã³ãã³ãã¿ã€ããæç€ºçã«å®çŸ©ã§ããŸãã
enum ContentType {
MOVIE,
TV_SERIES,
BOOK,
ARTICLE,
PODCAST_EPISODE,
GAME,
DOCUMENTARY
}
ãã®åæåã¯ãã·ã¹ãã å ã®ãã¹ãŠã®ã³ã³ãã³ãã®æšæºçãªåç §ãšããŠæ©èœããŸããããããã¬ã³ã¡ã³ããŒã·ã§ã³ã¯ãšãªãŸãã¯çµæã¯ããããã®ã¿ã€ãã®ããããã§æç€ºçã«ã¿ã°ä»ãã§ããŸãã
æ§é åãããã³ã³ãã³ãã¹ããŒãïŒéãã®è©³çް
ã³ã³ãã³ãã®ã¿ã€ããç¥ãããšä»¥äžã«ããã®ã³ã³ãã³ããã©ã®ããã«æ§é åãããŠããããç¥ãå¿ èŠããããŸããå `ContentType` ã«ã¯ç¬èªã®ã¹ããŒãããããåºæã®å±æ§ã詳现ã«èšè¿°ããŸããããã§ãã€ã³ã¿ãŒãã§ãŒã¹ããã¬ã€ããããã³ç¹å®ã®ããŒã¿ã¯ã©ã¹/æ§é äœã圹å²ãæãããŸãã
äŸïŒåå¥ã®ã³ã³ãã³ãã¹ããŒãïŒæŠå¿µçïŒ æ ç»ãšæžç±ã®åºæã®ãã£ãŒã«ããæ€èšããŠãã ããã
interface RecommendableItem {
id: string;
title: string;
description: string;
contentType: ContentType;
// ãã¹ãŠã®æšå¥šå¯èœãªã¢ã€ãã ã«é©çšãããå
±éãã£ãŒã«ã
}
class Movie implements RecommendableItem {
id: string;
title: string;
description: string;
contentType: ContentType.MOVIE;
director: string;
actors: string[];
genre: string[];
runtimeMinutes: number;
releaseDate: Date;
// ... ãã®ä»ã®æ ç»åºæãã£ãŒã«ã
}
class Book implements RecommendableItem {
id: string;
title: string;
description: string;
contentType: ContentType.BOOK;
author: string;
isbn: string;
pages: number;
publisher: string;
publicationDate: Date;
// ... ãã®ä»ã®æžç±åºæãã£ãŒã«ã
}
ããã§ã¯ã`RecommendableItem` ã¯å ±éã®ã€ã³ã¿ãŒãã§ãŒã¹ãšããŠæ©èœãããã¹ãŠã®ã³ã³ãã³ãã¿ã€ããåºæ¬çãªèå¥ãå ±æããããšãä¿èšŒããŸãã`Movie` ã `Book` ã®ãããªç¹å®ã®ã¯ã©ã¹ã¯ãåºæã®ååºæã®å±æ§ã远å ããŸãããã®èšèšãã¿ãŒã³ã«ãããã¢ã€ãã ãååŸãããšãã« `contentType` ãç¥ã£ãŠãããå®è¡æãšã©ãŒã®æããªãåºæã®ããããã£ã«ã¢ã¯ã»ã¹ããããã«ããã®ç¹å®ã®ã¿ã€ãã«å®å šã«ãã£ã¹ãïŒãŸãã¯ãã¿ãŒã³ãããã³ã°ã䜿çšïŒã§ããããšãä¿èšŒãããŸãã
åå®å šãªã¬ã³ã¡ã³ããŒã·ã§ã³ãšã³ãžã³ïŒãžã§ããªã¯ã¹ãšé¢æ°ã·ã°ããã£
ã¬ã³ã¡ã³ããŒã·ã§ã³ã·ã¹ãã ã®ã³ã¢ã§ããã¢ã«ãŽãªãºã ãšã¢ãã«ïŒææ¡ãçæãããã®ïŒããåãæèããŠããå¿ èŠããããŸããããã§ããžã§ããªã¯ã¹ãé«é颿°ãããã³å³å¯ãªé¢æ°ã·ã°ããã£ã®ãããªããã°ã©ãã³ã°èšèªæ©èœãéåžžã«åœ¹ç«ã¡ãŸãã
äŸïŒåå®å
šãªã¬ã³ã¡ã³ããŒã·ã§ã³é¢æ°ïŒæŠå¿µçïŒ
`List
// ç¹å®ã®ã¿ã€ãã®ã³ã³ãã³ããæšå¥šãã颿°
function recommendSpecificContent(
user: User,
context: RecommendationContext,
desiredType: ContentType
): List {
// desiredType ã«åºã¥ããŠæšå¥šãååŸ/ãã£ã«ã¿ãªã³ã°ããããžãã¯
// ...
// è¿ããããªã¹ãã®ãã¹ãŠã®ã¢ã€ãã ã T ã¿ã€ãã§ããããšã確èªãã
return results.filter(item => item.contentType === desiredType) as List;
}
// äœ¿çšæ³ïŒ
const recommendedMovies: List =
recommendSpecificContent(currentUser, currentContext, ContentType.MOVIE);
const recommendedBooks: List =
recommendSpecificContent(currentUser, currentContext, ContentType.BOOK);
ãã® `recommendSpecificContent` 颿°ã¯ `desiredType` åŒæ°ãåãããããŠæãéèŠãªããšã«ããžã§ããªã㯠(`
é«åºŠãªå®è£ ã§ã¯ãç¹å®ã®ã³ã³ãã³ãã¿ã€ãã«æé©åãããç°ãªãã¬ã³ã¡ã³ããŒã·ã§ã³ã¢ãã«ãŸãã¯ãã€ãã©ã€ã³ãå«ãŸããå ŽåããããŸããåå®å šæ§ã¯ãèŠæ±ãæ£ããå°éãšã³ãžã³ã«ã«ãŒãã£ã³ã°ããããã®ãã¬ãŒã ã¯ãŒã¯ãæäŸãããããã®ãšã³ãžã³ããã®åºåãæåŸ ãããã¿ã€ãã«æºæ ããããšãä¿èšŒããŸãã
åå®å šãªAPIãšã³ããã€ã³ããšã¯ã©ã€ã¢ã³ãã€ã³ã¿ã©ã¯ã·ã§ã³
åå®å šæ§ã®ã¡ãªããã¯ãã·ã¹ãã ã®å€éšã€ã³ã¿ãŒãã§ãŒã¹ãç¹ã«APIã«ãŸã§åã³ãŸããåå®å šãªAPIã¯ãã¬ã³ã¡ã³ããŒã·ã§ã³ããŒã¿ã®ãããã¥ãŒãµãŒãšã³ã³ã·ã¥ãŒããŒãæç€ºçãªããŒã¿å¥çŽã«åæããããšãä¿èšŒããçµ±åãšã©ãŒãåæžããéçºè ãšã¯ã¹ããªãšã³ã¹ãåäžãããŸãã
GraphQLãŸãã¯gRPCã«ãã匷åãªåä»ã
GraphQLãgRPCã®ãããªãã¯ãããžãŒã¯ãåå®å šãªAPIã®æ§ç¯ã«æé©ãªéžæè¢ã§ãããããã¯ããã¹ãŠã®å¯èœãªã³ã³ãã³ãã¿ã€ããšãã®ãã£ãŒã«ããæç€ºçã«è©³çްã«èšè¿°ããã¹ããŒããå®çŸ©ã§ããŸããã¯ã©ã€ã¢ã³ãã¯ç¹å®ã®ã¿ã€ããã¯ãšãªã§ããAPIã²ãŒããŠã§ã€ã¯ãããã®åå¥çŽã匷å¶ã§ããŸããããã¯ã倿§ãªã¯ã©ã€ã¢ã³ãïŒWebãã¢ãã€ã«ãã¹ããŒãããã€ã¹ãããŒãããŒçµ±åïŒãã¬ã³ã¡ã³ããŒã·ã§ã³ããŒã¿ãæ¶è²»ããå¯èœæ§ã®ããã°ããŒãã«ãã©ãããã©ãŒã ã«ãšã£ãŠç¹ã«åŒ·åã§ãã
äŸïŒGraphQLã¯ãšãªïŒæŠå¿µçïŒ
query GetRecommendedMovies($userId: ID!) {
user(id: $userId) {
recommendedItems(type: MOVIE) {
... on Movie {
id
title
director
runtimeMinutes
genre
}
}
}
}
ãã®GraphQLäŸã§ã¯ã`recommendedItems` ãã£ãŒã«ãã¯ç°ãªãã¿ã€ããè¿ãããšãã§ããŸãããã¯ãšãªã¯ `... on Movie` ãæç€ºçã«èŠæ±ããŠãããã¢ã€ãã ãå®éã«æ ç»ã§ããå Žåã«ã®ã¿ã¯ã©ã€ã¢ã³ããæ ç»åºæã®ãã£ãŒã«ããåä¿¡ããããšãä¿èšŒããŸãããã®ãã¿ãŒã³ã¯ãGraphQLã§ã¯ããŠããªã³ã¿ã€ãããŸãã¯ãã€ã³ã¿ãŒãã§ãŒã¹ã¿ã€ãããšããŠããåç §ãããåå®å šãªã³ã³ãã³ãçºèŠãšå®å šã«äžèŽããŸãã
æ€èšŒããã³ã·ãªã¢ã©ã€ãŒãŒã·ã§ã³/ãã·ãªã¢ã©ã€ãŒãŒã·ã§ã³
匷åã«åä»ããããAPIã§ãã£ãŠãããããã¯ãŒã¯å¢çãè¶ããããŒã¿ã¯å³å¯ãªæ€èšŒãå¿ èŠã§ããPythonã®Pydanticã®ãããªã©ã€ãã©ãªããçµã¿èŸŒã¿æ€èšŒïŒäŸïŒJavaã®Spring BootïŒãåãããã¬ãŒã ã¯ãŒã¯ã¯ãçä¿¡ããã³çºä¿¡ããŒã¿ãå®çŸ©ãããã¿ã€ããšã¹ããŒãã«æºæ ããŠããããšãä¿èšŒããŸããã·ãªã¢ã©ã€ãŒãŒã·ã§ã³ïŒãªããžã§ã¯ããéä¿¡å¯èœãªåœ¢åŒã«å€æããïŒãšãã·ãªã¢ã©ã€ãŒãŒã·ã§ã³ïŒå ã«æ»ãïŒãåãæèããŠããå¿ èŠããããåå¥ã®ã³ã³ãã³ãã¿ã€ãã®å€æãæ£ããåŠçããå¿ èŠããããŸãã
é«åºŠãªæŠå¿µãšã°ããŒãã«ãªèæ ®äºé
ã¬ã³ã¡ã³ããŒã·ã§ã³ã·ã¹ãã ãããæŽç·Žãããã°ããŒãã«ãªãªãŒããæã€ããã«ãªãã«ã€ããŠãåå®å šæ§ã¯ããè€éãªã·ããªãªã«å¯ŸåŠããããã«é²åããå¿ èŠããããŸãã
ããªã¢ãŒãã£ãã¯ãªæšå¥šïŒå®å šãªã¿ã€ãã®ãã¬ã³ã
å Žåã«ãã£ãŠã¯ãæãé åçãªæšå¥šã¯è€æ°ã®ã³ã³ãã³ãã¿ã€ãã«ãŸããããã®ã§ããããšãã°ãããã®æ¬ã奜ããªãããã®ããã¥ã¡ã³ã¿ãªãŒããã®é¢é£èšäºããŸãã¯ãã®ãªã³ã©ã€ã³ã³ãŒã¹ã奜ããããããŸããããããã¯ããªã¢ãŒãã£ãã¯ãªæšå¥šã®åºçªã§ããã¿ã€ããæ··åšãããªããããäœãæ±ã£ãŠããããç¥ã£ãŠãããšããã³ã¢ååã¯æéèŠã§ãã
ãŠããªã³ã¿ã€ããšãã¿ãŒã³ãããã³ã°
ãããããµããŒãããããã°ã©ãã³ã°èšèªã§ã¯ããŠããªã³ã¿ã€ãïŒãŸãã¯ååãå€å¥ãŠããªã³ïŒã¯ãããã€ãã®åå¥ã®ã¿ã€ãã®ãã¡ã®1ã€ã«ãªãå¯èœæ§ã®ããå€ã衚ãã®ã«çæ³çã§ããããšãã°ã`RecommendedItem = Movie | Book | Article`ã ãã®ãããªãŠããªã³ãæ¶è²»ããå Žåããã¿ãŒã³ãããã³ã°ãŸãã¯ç¶²çŸ ç㪠`switch` ã¹ããŒãã¡ã³ãã䜿çšããŠãåç¹å®ã®ã¿ã€ããå®å šã«åŠçã§ããŸãã
function displayRecommendation(item: RecommendedItem) {
switch (item.contentType) {
case ContentType.MOVIE:
const movie = item as Movie;
console.log(`Watch: ${movie.title} by ${movie.director}`);
// æ ç»åºæã®UIã衚瀺
break;
case ContentType.BOOK:
const book = item as Book;
console.log(`Read: ${book.title} by ${book.author}`);
// æžç±åºæã®UIã衚瀺
break;
// ... ãã®ä»ã®ã¿ã€ããç¶²çŸ
çã«åŠç
}
}
ããã«ããããã¹ãŠã®å¯èœãªã³ã³ãã³ãã¿ã€ããæç€ºçã«èæ ®ãããç°çš®ã¬ã³ã¡ã³ããŒã·ã§ã³ãªã¹ããæ±ãéã«ãæ¬ èœããŠããã±ãŒã¹ãå®è¡æãšã©ãŒãé²ãããšãã§ããŸããããã¯ãç°ãªãå°åãç°ãªãã³ã³ãã³ãã®å¯çšæ§ãŸãã¯æ¶è²»ãã¿ãŒã³ãæã€å¯èœæ§ããããæ··åã¿ã€ãã®æšå¥šãéåžžã«åŒ·åã«ãªãã°ããŒãã«ãã©ãããã©ãŒã ã«ãšã£ãŠéèŠã§ãã
èšèªåºæã®å®è£ ïŒæŠå¿µäŸïŒ
ããŸããŸãªããã°ã©ãã³ã°ãšã³ã·ã¹ãã ã¯ãçµã¿èŸŒã¿ã®åå®å šæ§ã®ããŸããŸãªã¬ãã«ãšããããéæããããã®ãã¿ãŒã³ãæäŸããŸãã
- TypeScript, Scala, KotlinïŒãããã®èšèªã¯ãéçåä»ããé«åºŠãªåã·ã¹ãã ïŒãžã§ããªã¯ã¹ããŠããªã³ã¿ã€ããå¯å°ã¯ã©ã¹/ãã¬ã€ãïŒãããã³äžå€ã§äºæž¬å¯èœãªããŒã¿ãããŒã奚å±ãã颿°åããã°ã©ãã³ã°ãã©ãã€ã ã«ãããåå®å šãªã¬ã³ã¡ã³ããŒã·ã§ã³ã«æé©ã§ãã
- Pydantic/Type Hints ã䜿çšãã PythonïŒPython ã¯åçã«åä»ããããŠããŸãããåãã³ãïŒPEP 484ïŒãš Pydantic ã®ãããªããŒã¿æ€èšŒããã³è§£æã©ã€ãã©ãªã®æ¡çšãå¢ããŠãããããéçºè ã¯ãç¹ã« API ã®å¢çãããŒã¿ã¢ãã«ã«ãããŠãå€§å¹ ãªåå®å šæ§ãéæã§ããŸãã
- ãžã§ããªã¯ã¹ãšã€ã³ã¿ãŒãã§ãŒã¹ã䜿çšãã Java/C#ïŒJava ã C# ã®ãããªãªããžã§ã¯ãæåèšèªã¯ãã€ã³ã¿ãŒãã§ãŒã¹ãšãžã§ããªã¯ã¹ã䜿çšããŠåå¥çŽã匷å¶ããããšãé·å¹Žä¿¡é ŒããŠãããã¬ã³ã¡ã³ããŒã·ã§ã³ãšã³ãžã³ãå«ãå ç¢ãªåå®å šãªã·ã¹ãã ãæ§ç¯ããã®ã«é©ããŠããŸãã
ã°ããŒãã«ããŒã¿ã¢ãã«ãšããŒã«ã©ã€ãŒãŒã·ã§ã³
ã°ããŒãã«ãªãªãŒãã£ãšã³ã¹ã«ãšã£ãŠãåå®å šãªã¬ã³ã¡ã³ããŒã·ã§ã³ã·ã¹ãã ã¯ãããŒã«ã©ã€ãŒãŒã·ã§ã³ãšåœéåïŒi18nïŒãèæ ®ããå¿ èŠããããŸããã³ã³ãã³ãã¿ã€ãèªäœãããŒã«ã©ã€ãºãããã¡ã¿ããŒã¿ãéã¶å¿ èŠãããå ŽåããããŸããããšãã°ïŒ
- ããŒã«ã©ã€ãºãããã¿ã€ãã«ãšèª¬æïŒ`Movie` ãªããžã§ã¯ãã«ã¯ã翻蚳ãä¿åããããã® `title: Map
` ãŸã㯠`description: Map ` ãããå ŽåããããŸãã - é貚ãšäŸ¡æ ŒïŒ`Product` ã¢ã€ãã ã«ã¯ã倿§ãªã°ããŒãã«åžå ŽãåŠçããããã® `price: Map
` ãå¿ èŠã§ãã - å°åè©äŸ¡ãšå¶éïŒæ ç»ãã²ãŒã ã®ãããªã³ã³ãã³ãã¯ãåœã«ãã£ãŠç°ãªã幎霢è©äŸ¡ãã³ã³ãã³ãã¢ããã€ã¶ãªãŒãæã€å ŽåããããŸãã
ãããã®ããŒã«ã©ã€ãºããã屿§ãåå®çŸ©ã«çŽæ¥çµã¿èŸŒãããšã§ãã¬ã³ã¡ã³ããŒã·ã§ã³ãšã³ãžã³ãç¹å®ã®ãŠãŒã¶ãŒãã±ãŒã«ã®ã³ã³ãã³ããé ä¿¡ãããšãã«ãæ£ãããæåçã«é©åãªæ å ±ãååŸããŠæç€ºã§ããããšãä¿èšŒãããŸããããã«ãããç¹å®ã®å°åã§ç¡é¢ä¿ãŸãã¯æ»æçã§ããããå¯èœæ§ã®ããæšå¥šãé²ããã°ããŒãã«ãªãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãå€§å¹ ã«åäžãããŸãã
åå®å šãªã¬ã³ã¡ã³ããŒã·ã§ã³ã®å®çšçãªäŸãšãŠãŒã¹ã±ãŒã¹
ããŸããŸãªæ¥çã§åå®å šãªã¬ã³ã¡ã³ããŒã·ã§ã³ãã©ã®ããã«é©çšã§ããç¹å®ã®ã³ã³ãã³ãçºèŠã·ããªãªã匷åã§ãããã説æããŸãããã
1. Eã³ããŒã¹ãã©ãããã©ãŒã ïŒè£å®çãªè£œåçºèŠ
eã³ããŒã¹å€§æãè£å®çãªè£œåãæšå¥šããããšèããŠããŸãããããžã¿ã«æžç±ããé²èЧããŠãããšãã«ãéŽããæšå¥šãããããã·ã£ããã®è£å®ãšããŠãæŽæ¿¯æ©ããæšå¥šãããããå¯èœæ§ããããŸãã
åå®å
šãªã¢ãããŒãïŒ
`ApparelProduct`ã`ElectronicsProduct`ã`BookProduct`ã`DigitalDownload` ã®ãããªåå¥ã®ã¿ã€ããå®çŸ©ããŸãããŠãŒã¶ãŒã `ApparelProduct`ïŒäŸïŒã·ã£ãïŒã衚瀺ãããšãã¬ã³ã¡ã³ããŒã·ã§ã³ãšã³ãžã³ã `desiredType` ãã£ã«ã¿ãŒã `ApparelProduct` ãŸã㯠`AccessoryProduct` ã«èšå®ããŠåŒã³åºãããŸããæ¬¡ã«ãè«ççã«äºææ§ã®ãã `TieProduct` ãŸã㯠`BeltProduct`ïŒã©ã¡ãã `ApparelProduct` ãµãã¿ã€ãïŒãŸã㯠`ShoeCareProduct`ïŒ`AccessoryProduct`ïŒãæšå¥šããŸããAPI ã¯æç€ºçã« `List
2. ã¡ãã£ã¢ã¹ããªãŒãã³ã°ãµãŒãã¹ïŒæ¬¡ã®ããããã³ã³ãã³ããšãžã£ã³ã«æ¢çŽ¢
ã°ããŒãã«ã¹ããªãŒãã³ã°ãµãŒãã¹ã¯ãã·ãªãŒãºã®æ¬¡ã®ãšããœãŒããæšå¥šããããç¹å®ã®ãžã£ã³ã«å ã®æ°ããã³ã³ãã³ããææ¡ãããããå¿ èŠããããŸããåä»ããããŠããªãã·ã¹ãã ã¯ããŠãŒã¶ãŒããã¬ãã·ãªãŒãºã®éäžã«ãããšãã«èª€ã£ãŠæ ç»ãæšå¥šãããããŠãŒã¶ãŒãèŠèŠçãªã³ã³ãã³ããå ·äœçã«é²èЧããŠãããšãã«ãªãŒãã£ãªã®ã¿ã®ããããã£ã¹ããæšå¥šãããããå¯èœæ§ããããŸãã
åå®å
šãªã¢ãããŒãïŒ
`Movie`ã`TVEpisode`ã`TVSeries`ã`PodcastEpisode`ã`Audiobook`ããŠãŒã¶ãŒã `TVSeries` Y ã® `TVEpisode` X ãå®äºãããšãã·ã¹ãã ã¯æç€ºçã« `TVSeries` Y ã«å±ããããé«ããšããœãŒãçªå·ãæã€ `TVEpisode` ãèŠæ±ããŸãããŠãŒã¶ãŒã `Action` ãžã£ã³ã«ãé²èЧããŠããå Žåãã·ã¹ãã 㯠`Action` ã§ã¿ã°ä»ãããã `List
3. åŠç¿ãã©ãããã©ãŒã ïŒã¹ãã«åºæã®ã³ãŒã¹ãšãªãœãŒã¹ã®æšå¥š
æè²ãã©ãããã©ãŒã ã¯ããŠãŒã¶ãŒãç¹å®ã®ã¹ãã«ãéçºããã®ã«åœ¹ç«ã€ã³ãŒã¹ãèšäºãã€ã³ã¿ã©ã¯ãã£ãæŒç¿ãæšå¥šããããšãç®æããŠããŸããåçŽãªã·ã¹ãã ã¯ããŠãŒã¶ãŒã `AdvancedCourse` ãå ·äœçã«æ€çŽ¢ããŠãããšãã«ãåå¿è ãããã¯ã«é¢ãã `Article` ãæšå¥šããå¯èœæ§ããããŸãã
åå®å
šãªã¢ãããŒãïŒ
`VideoCourse`ã`TextbookModule`ã`InteractiveExercise`ã`ResearchPaper`ã`CertificationProgram`ãåã¿ã€ã㯠`difficultyLevel` ãš `skillTag` ã«é¢é£ä»ããããŸãããŠãŒã¶ãŒã `BeginnerPythonCourse` ãå®äºãã`Data Science` ã«èå³ã瀺ããå Žåãã·ã¹ãã ã¯ã¹ãã«ã®é²è¡ã«äžèŽãã `List
4. ãã¥ãŒã¹ã¢ã°ãªã²ãŒã¿ãŒïŒè¶ é¢é£æ§ã®é«ããã¥ãŒã¹ã«ããŽãªã®æäŸ
ã°ããŒãã«ãã¥ãŒã¹ã¢ã°ãªã²ãŒã¿ãŒã¯ãæ°åã®ãœãŒã¹ããã³ã³ãã³ããæäŸããŸãããŠãŒã¶ãŒã¯ãã°ãã°éåžžã«ç¹å®ã®ã«ããŽãªãããšãã°ããã¯ãããžãŒãããã°ããŒãã«æ¿æ²»ãããŸãã¯ãããŒã«ã«ã¹ããŒããã®ãã¥ãŒã¹ãæ±ããŠããŸããåå®å šæ§ããªããã°ã誀ã£ãã¿ã°ãäžè¬çãªã¬ã³ã¡ã³ããŒã·ã§ã³ã¢ãã«ã®ããã«ãããã¯ãããžãŒäŒæ¥ã®åçãã«é¢ããèšäºããã¹ããŒããã¥ãŒã¹ããã£ãŒãã«è¡šç€ºãããå¯èœæ§ããããŸãã
åå®å
šãªã¢ãããŒãïŒ
`category: NewsCategory` åæåãæã€ `NewsArticle` ãå®çŸ©ããŸãã`NewsCategory` åæåã¯ã`POLITICS_GLOBAL`ã`POLITICS_LOCAL_US`ã`SPORTS_FOOTBALL`ã`SPORTS_BASKETBALL_GLOBAL`ã`TECHNOLOGY_AI`ã`TECHNOLOGY_GADGETS` ã®ããã«è©³çްã«ã§ããå¯èœæ§ããããŸãããŠãŒã¶ãŒã `TECHNOLOGY_AI` ã賌èªãããšãã·ã¹ãã ã¯ãåèšäºã® `category` ã `TECHNOLOGY_AI` ã§ãã `List
課é¡ãšç·©åæŠç¥
ã¡ãªããã¯æç¢ºã§ãããåå®å šãªã¬ã³ã¡ã³ããŒã·ã§ã³ã·ã¹ãã ãæ¡çšããããšã«ã¯ãç¹ã«æ¢åã®å€§èŠæš¡ã·ã¹ãã ã«ãããŠã¯ãç¬èªã®èª²é¡ã䌎ããŸãã
1. åæèšèšã®è€éããšãªãŒããŒããã
ãã¹ãŠã®ã³ã³ãã³ãã¿ã€ãããã®ã¹ããŒããããã³ã·ã¹ãã å šäœã®åãæèããã€ã³ã¿ãŒãã§ãŒã¹ãç¶¿å¯ã«å®çŸ©ããããã®åæã®åŽåã¯çžåœãªãã®ã«ãªãå¯èœæ§ããããŸããã¬ã¬ã·ãŒã·ã¹ãã ã®å Žåãããã¯å€§å¹ ãªãªãã¡ã¯ã¿ãªã³ã°äœæ¥ã䌎ãå¯èœæ§ããããŸãã
ç·©åçïŒæ®µéçã«éå§ããŸããæåã«æãåé¡ã®ããããŸãã¯æã誀çšãããŠããã³ã³ãã³ãã¿ã€ããç¹å®ããŸããã³ã¢ããŒã¿ã¢ãã«ã®åå®å šæ§ããå®è£ ãéå§ããŸãã GraphQLãŸãã¯gRPCã®ãããªãã¯ãããžãŒã䜿çšããŠãã¬ã³ã¡ã³ããŒã·ã§ã³ãµãŒãã¹APIãé²åãããŸããã¬ã¬ã·ãŒã³ãŒãããŒã¹å šäœã«åãçµãåã«ãæ°ããæ©èœãŸãã¯ã¢ãžã¥ãŒã«ã§åå®å šæ§ãå®è£ ããŸããæ¢åã®ããŒã¿ããåå®çŸ©ãçæããã®ã«åœ¹ç«ã€ããŒã«ïŒäŸïŒJSONã¹ããŒãããã³ãŒãçæïŒãå©çšããŸãã匷åãªã¢ãŒããã¯ãã£ãªãŒããŒã·ãããšæç¢ºãªããã¥ã¡ã³ãã«æè³ããŠãç§»è¡ãã¬ã€ãããŸãã
2. ã¹ããŒãã®é²åãšé©å¿æ§
ã³ã³ãã³ãã¿ã€ããšãã®å±æ§ã¯éçã§ã¯ãããŸãããæ°ããæ©èœãæ°ããããŒã¿ãœãŒã¹ããŸãã¯æ°ããèŠå¶èŠä»¶ïŒäŸïŒGDPRãCCPAïŒã«ãããæ¢åã®ã¹ããŒãã®å€æŽãå¿ èŠã«ãªãå¯èœæ§ããããããã¯åå®å šãªã·ã¹ãã å šäœã«äŒæããå¯èœæ§ããããŸãã
ç·©åçïŒæåããæ¡åŒµæ§ãèæ ®ããŠèšèšããŸããã³ã³ãã³ãã¹ããŒããšAPIã«ããŒãžã§ã³ç®¡çã䜿çšããŸããå¯èœãªéãåŸæ¹äºææ§ã®ãã倿Žãæ¡çšããŸããã¹ããŒãé²åãäžå 管çããããã«ãã¹ããŒãã¬ãžã¹ããªïŒApache Kafkaã®Confluent Schema Registryãªã©ïŒã掻çšããŸãã匷åãªåä»ãã«ããã¹ããŒãé²åã容æã«ããProtobufãAvroã®ãããªãããã³ã«ãæ€èšããŠãã ããã
3. ããã©ãŒãã³ã¹ã®èæ ®äºé
éçåãã§ãã¯èªäœã«ã¯å®è¡æã³ã¹ãã¯ãããŸããããåãæèããã·ãªã¢ã©ã€ãŒãŒã·ã§ã³/ãã·ãªã¢ã©ã€ãŒãŒã·ã§ã³ãæ€èšŒããŸãã¯è€éãªãã¿ãŒã³ãããã³ã°ã®ãªãŒããŒãããã¯ã極端ãªå Žåãããããªããã©ãŒãã³ã¹ãžã®åœ±é¿ãããããå¯èœæ§ããããŸããããã«ãè€éãªåéå±€ã管çããããã®èªç¥çãªãªãŒããŒãããã¯ãé©åã«ç®¡çãããŠããªãå Žåãéçºé床ã«åœ±é¿ãäžããå¯èœæ§ããããŸãã
ç·©åçïŒã¯ãªãã£ã«ã«ãã¹ãæé©åããŸãããããã¡ã€ã«ãšãã³ãããŒã¯ãå®è¡ããŠããã«ããã¯ãç¹å®ããŸããå€ãã®ææ°ã®åã·ã¹ãã ãšã©ã€ãã©ãªã¯é«åºŠã«æé©åãããŠããŸããå¯èœãªéãã³ã³ãã€ã«æãã§ãã¯ã«çŠç¹ãåœãŠããšã©ãŒãå·Šã«ã·ããããŸããéåžžã«ããã©ãŒãã³ã¹ãã¯ãªãã£ã«ã«ãªãµãŒãã¹ã®å Žåãããã·ã³ãã«ã§ããçè§£ãããåèšèšããŸãã¯ãšã©ãŒã®ãªã¹ã¯ãæãé«ãå Žæã§ã®å³å¯ãªåä»ãã®éžæçãªé©çšãæ€èšããŠãã ãããããŸããŸãªã¬ã€ã€ãŒã§ãã£ãã·ã¥æŠç¥ãæ¡çšããŠãåé·ãªããŒã¿åŠçãæå°éã«æããŸãã
4. æ©æ¢°åŠç¿ã¢ãã«ãšã®çµ±å
æ©æ¢°åŠç¿ã¢ãã«ã¯ãå ã®ã³ã³ãã³ãã¿ã€ããæœè±¡åããŠãæ°å€ãŸãã¯ã«ããŽãªã«ã«ãªç¹åŸŽéã§æäœãããããšããããããŸãããããã®ã¢ãã«ãåå®å šãªé ä¿¡ãã€ãã©ã€ã³ã«å床統åããã«ã¯ãæ³šææ·±ãããªããžã³ã°ãå¿ èŠã§ãã
ç·©åçïŒããŸããŸãªã³ã³ãã³ãã¿ã€ãããæŽŸçããç¹åŸŽéããããèªäœåãæèããŠããããšãä¿èšŒããŸããMLã¢ãã«ã®åºåã¯ãçæ³çã«ã¯ `item_id` ãšãã® `content_type` ã®ãªã¹ãã§ãããååŸã¬ã€ã€ãŒãå®å šãªåä»ããããã³ã³ãã³ããååŸã§ããããã«ããŸããMLã¢ãã«èªäœã®ã³ã¢ãåã«äŸåããªãå Žåã§ããããŒã¿é ä¿¡ãšUIã¬ãã«ã§åå®å šæ§ãç¶æããããã«ãçã®æšå¥šãå®å šãªåå®å šãªã³ã³ãã³ããªããžã§ã¯ãã§åŒ·åããŠãããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ã«éä¿¡ããå°çšã®ããã¬ãŒã³ããŒã·ã§ã³ã¬ã€ã€ãŒãã䜿çšããŸãããã®æžå¿µäºé ã®åé¢ã«ãããåå®å šæ§ãç¶æãããŸãã
ã¬ã³ã¡ã³ããŒã·ã§ã³ã®æªæ¥ïŒåºæ¬çãªåå®å šæ§ããããã«å ãž
AIãšããŒã¿ãµã€ãšã³ã¹ã®åéã鲿©ãç¶ããã«ã€ããŠãã¬ã³ã¡ã³ããŒã·ã§ã³ã·ã¹ãã ã«ãããåå®å šæ§ã®æŠå¿µãé²åããŠããŸãã
ã»ãã³ãã£ãã¯ã¿ã€ãã³ã°
æ§é åïŒäŸïŒ`Movie`ã`Book`ïŒãè¶ ããŠãå°æ¥ã®ã·ã¹ãã ã¯ã³ã³ãã³ãã®æå³ãæå³ãèšè¿°ãããã»ãã³ãã£ãã¯ã¿ã€ãããæŽ»çšããå¯èœæ§ããããŸããããšãã°ã`RecommendationForLearning` ã¿ã€ãã¯ãäž¡æ¹ãšãåŠç¿ç®æšãéæããå Žåã`VideoCourse` ãš `ResearchPaper` ã®äž¡æ¹ãã«ãã»ã«åããå¯èœæ§ããããæ§é 圢åŒã ãã§ãªãããŠãŒã¶ãŒã®æå³ã«åºã¥ããããã€ã³ããªãžã§ã³ããªã¯ãã¹ã¿ã€ãææ¡ãå¯èœã«ããŸããããã¯ãæè¡çãªåå®çŸ©ãšçŸå®äžçã®ãŠãŒã¶ãŒç®æšã®éã®ã®ã£ãããåããŸãã
ã³ã³ããã¹ãã¿ã€ãã³ã°
æšå¥šã¯ãŸããŸãã³ã³ããã¹ãã«äŸåããããã«ãªã£ãŠããŸãïŒæå»ãããã€ã¹ãå ŽæãçŸåšã®æŽ»åïŒããã³ã³ããã¹ãã¿ã€ãã³ã°ãã¯ãæšå¥šãã³ã³ãã³ãã¿ã€ãã ãã§ãªããçŸåšã®ã³ã³ããã¹ãã«ãäžèŽããããšãä¿èšŒããããã«åºçŸããå¯èœæ§ããããŸããããšãã°ãéå€äžã® `ShortAudioStory` ã¿ã€ããšã鱿«ã®å€ã® `FeatureFilm` ã¿ã€ããæšå¥šãããªã©ãçŸåšã®å¯Ÿè©±ã³ã³ããã¹ãã«æç€ºçã«åä»ããããŸãã
ãããã®å°æ¥ã®æ¹åæ§ã¯ãã³ã³ãã³ããšããããæ¶è²»ãããã³ã³ããã¹ãã®äž¡æ¹ãæ·±ãçè§£ããå ç¢ãªåã·ã¹ãã ã«ãã£ãŠãããã«ã€ã³ããªãžã§ã³ãã§ããŠãŒã¶ãŒäžå¿ã§ããšã©ãŒèæ§ã®é«ãã³ã³ãã³ãçºèŠãžã®ç§»è¡ã瀺ããŠããŸãã
çµè«ïŒå ç¢ã§ä¿¡é Œæ§ã®é«ãã¬ã³ã¡ã³ããŒã·ã§ã³ã·ã¹ãã ã®æ§ç¯
ããŒã¿ãšã³ã³ãã³ãã«æººããŠããäžçã§ã¯ã广çãªã³ã³ãã³ãçºèŠã¯åãªãæ©èœã§ã¯ãããŸãããããã¯ç«¶äºäžã®å¿ é äºé ã§ããåå®å šãªã¬ã³ã¡ã³ããŒã·ã§ã³ã·ã¹ãã ã¯ããã®æ ã«ãããéèŠãªé²å段éã衚ããŠããŸããã·ã¹ãã å šäœã§ã³ã³ãã³ãã¿ã€ããå³å¯ã«å®çŸ©ããã³åŒ·å¶ããããšã«ãããçµç¹ã¯åå¿çãªãã°ä¿®æ£ããããã¢ã¯ãã£ãã§ã€ã³ããªãžã§ã³ããªèšèšãžãšç§»è¡ã§ããŸãã
ã¡ãªããã¯å€å²ã«ããããŸããã·ã¹ãã ã®å®å®æ§ã®åäžãéçºãµã€ã¯ã«ã®å éãåªããããŒã¿æŽåæ§ããããŠæãéèŠãªããšãšããŠãã°ããŒãã«ãªãŒãã£ãšã³ã¹ã®ããã®å€§å¹ ã«åŒ·åãããä¿¡é Œã§ãããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã§ããèšèšãšãªãã¡ã¯ã¿ãªã³ã°ãžã®åææè³ã¯çžåœãªãã®ã«èŠãããããããŸããããä¿å®æ§ãã¹ã±ãŒã©ããªãã£ãããã³ãŠãŒã¶ãŒæºè¶³åºŠã«ãããé·æçãªã¡ãªããã¯ãã³ã¹ããã¯ããã«äžåããŸããåå®å šæ§ã¯ãã¬ã³ã¡ã³ããŒã·ã§ã³ã·ã¹ãã ãæ··ä¹±ã®æœåšçãªãœãŒã¹ãããæçãã粟床ãä¿¡é Œæ§ã®æ±ãžãšå€é©ããŸãã
ããªãã®ããŒã ã®ããã®å®è·µçãªæŽå¯ïŒä»æ¥åå®å šæ§ãæ¡çšãã
- ã³ã³ãã³ãã¿ã€ãã®ç£æ»ïŒãŸãããã©ãããã©ãŒã ãåŠçãããã¹ãŠã®åå¥ã®ã³ã³ãã³ãã¿ã€ããåšåº«ããããšããå§ããŸãããããã®å¿ é 屿§ãšå ±éã€ã³ã¿ãŒãã§ãŒã¹ãå®çŸ©ããŸãã
- åå®çŸ©ã®å°å ¥ïŒã³ã¢ããŒã¿ã¢ãã«ã§æç€ºçãªåå®çŸ©ïŒåæåãã¯ã©ã¹ãã€ã³ã¿ãŒãã§ãŒã¹ãã¹ããŒãïŒã®å®è£ ãéå§ããŸãã
- ã¬ã³ã¡ã³ããŒã·ã§ã³APIã®ãªãã¡ã¯ã¿ãªã³ã°ïŒGraphQLãŸãã¯gRPCã®ãããªãã¯ãããžãŒããŸãã¯REST APIã§ã®åŒ·åãªåãã³ãã䜿çšããŠãã¬ã³ã¡ã³ããŒã·ã§ã³ãµãŒãã¹APIãåãæèããããã«é²åãããŸãã
- ããŒã ã®æè²ïŒãšã³ãžãã¢ãããŒã¿ãµã€ãšã³ãã£ã¹ãããããã¯ããããŒãžã£ãŒã®éã§åæèã®æåãè²ã¿ãŸãããã°ã®åæžãšéçºã®é«éåã®èгç¹ããã¡ãªããã匷調ããŸãã
- åããµããŒãããèšèª/ãã¬ãŒã ã¯ãŒã¯ã®æ¡çšïŒæ°ãããããžã§ã¯ããéå§ããå Žåã¯ãéçåä»ãæ©èœã匷åãªèšèªãšãã¬ãŒã ã¯ãŒã¯ãåªå ããŸããæ¢åã®ãããžã§ã¯ãã®å Žåã¯ãåãã§ãã¯ããŒã«ãšã©ã€ãã©ãªãçµ±åããŸãã
- ã¹ããŒãé²åã®èšç»ïŒå°æ¥ã®å€æŽãã¹ã ãŒãºã«ç®¡çããããã«ãã³ã³ãã³ãã¹ããŒãã®ããŒãžã§ã³ç®¡çãšåŸæ¹äºææ§æŠç¥ãå®è£ ããŸãã
- ãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãåªå ããïŒåžžã«ãåå®å šæ§ã®ç©¶æ¥µã®ç®æšã¯ããã¹ãŠã®äººããã¹ãŠã®å Žæã®ãŠãŒã¶ãŒã«ãããã·ãŒã ã¬ã¹ã§ãäºæž¬å¯èœã§ã楜ããã³ã³ãã³ãçºèŠãšã¯ã¹ããªãšã³ã¹ãæäŸããããšã§ããããšãå¿ããªãã§ãã ããã
ãããã®ã¹ããããèžãããšã§ãçµç¹ã¯é¢é£ã³ã³ãã³ããçºèŠããã ãã§ãªããæ¯é¡ã®ãªã粟床ãä¿¡é Œæ§ãèªä¿¡ããã£ãŠãããè¡ãã¬ã³ã¡ã³ããŒã·ã§ã³ã·ã¹ãã ãæ§ç¯ã§ããã°ããŒãã«ã«ã€ã³ããªãžã§ã³ããªã³ã³ãã³ããã©ãããã©ãŒã ã®æ°ããåºæºãèšå®ã§ããŸãã